There are a number of applications in which a set of values is transformed into a set of weighted sums where each weighted sum is produced by individually multiplying a number of the values with a set of weights and summing the individual product values. One such application is in the field of signal processing. Presently, multipliers are used to multiply successive signal values by the set of weights. Multipliers, while operating at ever higher speeds, typically remain the slowest link in the signal processing chain. Binary multiplication is accomplished swiftly in digital processing but not swiftly enough in many environments where data input and sampling rates are extremely high. Further, digital multipliers are power consumptive.
Attempts to diminish the obstacle of multiplier speed are approached from at least three directions. One is the ongoing attempt to build ever faster multipliers. Another is to use fewer multipliers by reducing the number of weights and thus the number of multipliers required to implement the weights. Reducing the number of weights, however, significantly decreases the accuracy of the signal weighting.
Yet another attempt is to limit the number of nonzero digits of each weight value such as by quantizing each weight value to be multiplied: in quantizing, the value is converted into one of a set of discrete values having few nonzero digits. As presently implemented, however, accuracy is greatly diminished by this approach.
A typical area where the problem of multiplier speed arises is in filtering using coefficient multiplication of delayed signal samples. A signal processor takes signals over a time window, that is, a time period, and multiplies these values by weights from a weight function such as might be obtained from a handbook. Reduction in the number of non-zero digits of the multiplier coefficients by conventionally quantizing them loses part of the information required to maintain acceptable filter performance.